Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Model-view-controller
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwcaModel-view-controller (mwcqMVC, talvolta tradotto in mwcgitaliano con la dicitura mwcwmodello-vista-controllo), in mwdainformatica, è un mwdqpattern architetturale molto diffuso nello sviluppo di sistemi mwdgsoftware, in particolare nell'ambito della mwdwprogrammazione orientata agli oggetti e in mweaapplicazioni web, in grado di separare la mweqlogica di presentazione dei dati dalla mweglogica di business.cite-ref-1[1] Questo pattern si posiziona nel livello logico o di business e di presentazione in una mwfwarchitettura multi-tier.

Contents

Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Descrizione

Componenti

Il componente centrale del MVC, il modello, cattura il comportamento dell'applicazione in termini di dominio del problema, indipendentemente dall'interfaccia utente (view). Il modello gestisce direttamente i dati, la logica e le regole dell'applicazione. Una vista può essere una qualsiasi rappresentazione in output di informazioni, come un grafico o un diagramma. Sono possibili viste multiple delle stesse informazioni, come ad esempio un grafico a barre per la gestione e la vista tabellare per l'amministrazione. La terza parte, il controller, accetta l'input e lo converte in comandi per il modello e/o la vista.

Struttura

Il pattern è basato sulla separazione dei compiti fra i componenti mwigsoftware che interpretano tre ruoli principali:

• il mwjqmodel fornisce i mwjgmetodi per accedere ai dati utili all'applicazione;
• la mwkaview visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti;
• il mwkgcontroller riceve i comandi dell'utente (in genere attraverso la view) e li attua modificando lo stato degli altri due componenti.

Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "mwlalogica di business"), a carico del mwlqcontroller e del mwlgmodel, e l'interfaccia utente a carico della mwlwview.cite-ref-2[2]

I dettagli delle interazioni fra questi tre oggetti software dipendono molto dalle tecnologie usate (mwnqlinguaggio di programmazione, eventuali mwnglibrerie, mwnwmiddleware e via dicendo) e dal tipo di applicazione (per esempio se si tratta di un'mwoaapplicazione web, o di un'mwoqapplicazione desktop). Quasi sempre la relazione fra mwogview e mwowmodel è descrivibile anche come istanza del pattern mwpaObserver. A volte, quando è necessario cambiare il comportamento standard dell'applicazione a seconda delle circostanze, il mwpqcontroller implementa anche il pattern mwpgStrategy.

Utilizzo

Storicamente il pattern MVC è stato implementato mwqqlato server. Recentemente, con lo sviluppo e la parziale standardizzazione di mwqgJavaScript sono nate le prime implementazioni mwqwlato client.cite-ref-3[3]

Lato server

Originariamente impiegato dal linguaggio mwsgSmalltalk, il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come mwswframework basati su mwtaPHP (mwtqSymfony, mwtgLaravel, mwtwZend Framework, mwuaCakePHP, mwuqYii framework, mwugCodeIgniter), su mwuwRuby (mwvaRuby on Rails), su mwvqPython (mwvgDjango, mwvwTurboGears, mwwaPylons, mwwqWeb2py, mwwgZope), su mwwwJava (mwxaSpring, mwxqJSF e mwxgStruts), su mwxwObjective C o su mwya.NET.

A causa della crescente diffusione di tecnologie basate su MVC nel contesto di mwygframework o piattaforma mwywmiddleware per mwzaapplicazioni web, l'espressione mwzqframework MVC o mwzgsistema MVC sta entrando nell'uso anche per indicare specificamente questa categoria di sistemi (che comprende per esempio mwzwRuby on Rails, mwaaStruts, mwaqSpring, Tapestry e mwagCatalyst).

Lato client

Negli ultimi anni è aumentata la richiesta di mwcgRich Internet application che facciano chiamate asincrone al server (mwcwAJAX), senza fare redirect per visualizzare i risultati delle elaborazioni. Col crescere della quantità di codice JavaScript eseguito sul client, si è sentita l'esigenza di creare i primi framework che implementassero MVC in puro JavaScript. Uno dei primi è stato Backbone.js, seguito da una serie interminabile di altri framework, tra cui JavaScriptMVC, Ember ed mwdaAngularJS.

Esempio

In mwdwJ2EE un esempio tipico è quello della suddivisione dell'applicazione in mweaJSP (per il front-end o view), mweqServlet per il controller e un File Java per la logica di business di interfacciamento o model con un mwegDB. Quando ciò non è presente un mwewframework MVC sta implementando la stessa logica/schema semplificando il tutto.

Note

cite-note-11. Per una introduzione di tipo universitario, consultare mwggqueste slide. Per avere una introduzione al pattern MVC in un'ottica Java, vedere mwgwquesto articolo mwhaArchiviatomwhq il 24 dicembre 2012 in mwhgInternet Archivemwhw. su Mokabyte, per avere una introduzione in ottica Microsoft, vedere mwiqquesto articolo su MSDN.
cite-note-22. Vedi l'mwjqarticolo di Martin Fowler.
cite-note-33. Leggere mwkqquesta ottima introduzione mwkgArchiviatomwkw il 31 dicembre 2013 in mwlaInternet Archivemwlq.

Bibliografia

• citerefsommerville-2017Ian Sommerville, Ingegneria del software, 10ª ed., Torino, Pearson, 2017, ISBN 9788891902245.

Voci correlate
Altri progetti

Altri progetti

• Wikimedia Commons

• Wikimedia Commons contiene immagini o altri file sul model-view-controller

Collegamenti esterni

• citereffoldoc(EN) Denis Howe, Model-View-Controller, in Free On-line Dictionary of Computing. Disponibile con licenza mwrgGFDL